package Servlet;


import java.io.IOException;

import java.util.ArrayList;

import javax.naming.NamingException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import EntityBeans.Abilita;
import EntityBeans.EsperienzaLavorativa;
import EntityBeans.Feedback;
import EntityBeans.Indirizzo;
import EntityBeans.PossessoAbilita;
import EntityBeans.RichiestaAiuto;
import EntityBeans.RichiestaAmicizia;
import EntityBeans.UtenteRegistrato;
import Sessions.AccettaAiutoSessionRemote;
import Sessions.AccettaAmiciziaSessionRemote;
import Sessions.RecuperaDatiSessionRemote;
import Sessions.RegistrazioneSessionRemote;
import Sessions.RichiestaAiutoSessionRemote;
import Sessions.RichiesteAmiciziaSessionRemote;

import java.util.Date;
/**
 * Servlet implementation class ProvaServlet
 */
public class AccettaAiutoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    private RequestDispatcher d;   
    private GestoreContesto contesto;
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AccettaAiutoServlet() {
        super();
       contesto = new GestoreContesto();
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try {
			eseguiRichiesta(request,response);
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		try {
			eseguiRichiesta(request,response);
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	private void eseguiRichiesta(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, NamingException {
		
		AccettaAiutoSessionRemote gestore = contesto.getGestore(AccettaAiutoSessionRemote.class, "AccettaAiutoSessionRemote");
		RichiestaAiutoSessionRemote gestore1 = contesto.getGestore(RichiestaAiutoSessionRemote.class,"RichiestaAiutoSessionRemote");
		RichiesteAmiciziaSessionRemote gestore2 = contesto.getGestore(RichiesteAmiciziaSessionRemote.class, "RichiesteAmiciziaSessionRemote");
		String lavoratore = request.getParameter("idlavoratorer");
		String idSessione = request.getParameter("idSessione");
		String idRichiesta = request.getParameter("idSessione");
		int giorno = Integer.parseInt(request.getParameter("giornor"));
		int mese = Integer.parseInt(request.getParameter("meser"));
		int anno = Integer.parseInt(request.getParameter("annor"));
		int minuti = Integer.parseInt(request.getParameter("minutir"));
		int secondi = Integer.parseInt(request.getParameter("secondir"));
		int ore = Integer.parseInt(request.getParameter("orer"));
		String datore = request.getParameter("iddatorer");
		
			gestore.cancellaRichiestaAiuto(datore,lavoratore,giorno,mese,anno,minuti,secondi,ore);
			
		    ArrayList<RichiestaAiuto> richiesteAiuto = gestore1.richiesteAiutoInviate(idSessione);
			ArrayList<RichiestaAiuto> richiesteAiutoricevute = gestore1.richiesteAiutoRicevute(idSessione);
			
			if((richiesteAiuto==null || richiesteAiuto.size()==0)&&(richiesteAiutoricevute==null || richiesteAiutoricevute.size()==0))
			{
				request.setAttribute("msg", "Non sono presenti rihcieste di aiuto  per l'utente selezionato");
				request.setAttribute("idSessione", idSessione);
				d=request.getRequestDispatcher("ErroreUtenteReg.jsp");
				d.forward(request, response);
			}
			else
			{
				if(richiesteAiuto!=null)
				{
					if(richiesteAiuto.size()!=0)
					{
						request.setAttribute("numeroAiuti", richiesteAiuto.size());
						request.setAttribute("idSessione", idSessione);
						request.setAttribute("idRichiesta", idRichiesta);
						request.setAttribute("richiesteinviate", "true");
						for(int i=0; i<richiesteAiuto.size();i++)
						{
							request.setAttribute("iddatore"+i, richiesteAiuto.get(i).getIdutentedatore());
							//ora
							request.setAttribute("nomedatore"+i, gestore2.ricercaNomeUtente(richiesteAiuto.get(i).getIdutentedatore()));
							request.setAttribute("cognomedatore"+i, gestore2.ricercaCognomeUtente(richiesteAiuto.get(i).getIdutentedatore()));
							request.setAttribute("idlavoratore"+i, richiesteAiuto.get(i).getIdutentelavoratore());
							request.setAttribute("nomelavoratore"+i, gestore2.ricercaNomeUtente(richiesteAiuto.get(i).getIdutentelavoratore()));
							request.setAttribute("cognomelavoratore"+i, gestore2.ricercaCognomeUtente(richiesteAiuto.get(i).getIdutentedatore()));
							request.setAttribute("descrizione"+i, richiesteAiuto.get(i).getDescrizione());
							request.setAttribute("data"+i, richiesteAiuto.get(i).getData());
							request.setAttribute("ora"+i, richiesteAiuto.get(i).getOra());
						}
					}
				}
				else
					request.setAttribute("richiesteinviate", "false");
				
				if(richiesteAiutoricevute!=null)
				{
					
					request.setAttribute("prova","");
					if(richiesteAiutoricevute.size()!=0)
				
				{
					request.setAttribute("prova","");
					request.setAttribute("numeroAiutiric", richiesteAiutoricevute.size());
					request.setAttribute("richiestericevute","true");
					request.setAttribute("idSessione", idSessione);
					request.setAttribute("idRichiesta", idRichiesta);
					for(int j=0; j<richiesteAiutoricevute.size(); j++)
					{
						request.setAttribute("iddatorer"+j, richiesteAiutoricevute.get(j).getIdutentedatore());
						request.setAttribute("nomedatorer"+j, gestore2.ricercaNomeUtente(richiesteAiutoricevute.get(j).getIdutentedatore()));
						request.setAttribute("cognomedatorer"+j, gestore2.ricercaCognomeUtente(richiesteAiutoricevute.get(j).getIdutentedatore()));
						request.setAttribute("idlavoratorer"+j, richiesteAiutoricevute.get(j).getIdutentelavoratore());
						request.setAttribute("nomelavoratorer"+j, gestore2.ricercaNomeUtente(richiesteAiutoricevute.get(j).getIdutentelavoratore()));
						request.setAttribute("cognomelavoratorer"+j, gestore2.ricercaCognomeUtente(richiesteAiutoricevute.get(j).getIdutentelavoratore()));
						request.setAttribute("descrizioner"+j, richiesteAiutoricevute.get(j).getDescrizione());
						request.setAttribute("giornor"+j, richiesteAiutoricevute.get(j).getData().getDate());
						request.setAttribute("meser"+j, richiesteAiutoricevute.get(j).getData().getMonth()+1);
						request.setAttribute("annor"+j, richiesteAiutoricevute.get(j).getData().getYear()+1900);
						request.setAttribute("orer"+j, richiesteAiutoricevute.get(j).getOra().getHours());
						request.setAttribute("minutir"+j, richiesteAiutoricevute.get(j).getOra().getMinutes());
						request.setAttribute("secondir"+j, richiesteAiutoricevute.get(j).getOra().getSeconds());
					
					}
				}
				}
				else
				{	request.setAttribute("prova","");
					request.setAttribute("richiestericevute", "false");
				}
				d=request.getRequestDispatcher("RichiestaAiuto.jsp");
				d.forward(request,response);	
				
			}

			}
			
			
			
		

		}
